// ajax封装
function ajax({url,method='get',data,contentType,authorization}){
    return new Promise((resolve,reject) => {
        try {
            const xhr = new XMLHttpRequest() //新建xhr对象

            if(url){
                xhr.open(method,url) // 对指定地址发起请求
            }else {
                resolve(new Error('url不能为空'))
            }

            contentType && xhr.setRequestHeader('Content-type',contentType) // 设置请求头
            
            authorization && xhr.setRequestHeader('Authorization',authorization) 

            method === 'post' && data && xhr.send(JSON.stringify(data)) //post请求发送携带的参数
            
            !data && xhr.send(null)

            xhr.onload = function(){ // 请求完成返回数据的回调
                const res = {
                    ...JSON.parse(xhr.responseText),
                    status: xhr.status
                }
                resolve(res) 
            }
        } catch (error) {
            reject(error)    
        }
    })
}

async function request(url,option={}){
    const token = localStorage.getItem('token') || ''
    // 设置默认的请求头
    const options = {
        contentType :'application/json',
        authorization : 'Bearer ' + token,
        ...option
    }

    try {
        const currentUrl = url.includes('localhost:3000') ? url : BASE_URL+url
        const res = await ajax({url:currentUrl,...options})

        // 处理请求返回的状态
        let status = res.status
        if(status === 401){
            location.href = '/login'
            alert('登录状态过期，请重新登录')
            return ''
        }

        if(status >= 500) {
            alert('服务器崩溃了~')
            return ''
        }

        if(status === 400) {
            alert('请求格式有误！')
            return ''
        }

        if(status >= 200 && status < 300){
            console.log('aaaaaaaaaaaaaaa');
            return res
        }

    } catch (error) {
        console.log(err);
        alert('网络开小差了,请稍后再试哦~')
    }
    
    
}